[小ネタ] RDSのSingle-AZ構成でAvailability Zoneを変更する方法
はじめに
清水です。先日、RDSをSingle-AZ構成で構築していた際、Availability Zone(AZ)を間違えてしまいました。 ちょうど以下の様な状態です。
EC2インスタンスのAZはap-northeast-1aに寄せていますが、RDSだけap-northeast-1cに構築してしまいました。
これは、、RDSを作りなおす(起動済みのものを削除して、再度、意図したAZを指定して起動し直す)ことをしないとダメかな、、と思いましたが、ちょっと工夫することでRDSの作りなおしをすることなく、AZを移すことができましたのでまとめてみます。
なお、RDSのエンジンについてはMySQLを想定しています。
Single-AZ構成でのAvailability Zoneの変更方法
先に手順をまとめてみますと、以下となります。
- Multi-AZに変更
- フェイルオーバーの強制実行
- Single-AZに変更
Multi-AZに変更
まず、RDSをSingle-AZの構成からMulti-AZ構成に変更します。
こちらが変更前の状態です。 ap-northeast-1aに起動したかったのですが、間違えてap-northeast-1cに起動しまった状態です。
対象のDBインスタンスを選択して、インスタンスの操作 > 変更 をクリックします。
マルチAZ配置の項目を「いいえ」から「はい」に変更します。
必要に応じて「すぐに適用」にチェックを付けて、次ページで変更内容を確認、[DBインスタンスの変更]ボタンを押して変更内容を反映させます。 (「すぐに適用」がOffの場合は、次回メンテンナス時間中に適用されます)
DBインスタンスのステータスが変更中から利用可能になると、Multi-AZ構成に変更されています。
フェイルオーバーの強制実行
続いて、Multi-AZ構成にしたDBインスタンスを強制フェイルオーバーさせ、プライマリの稼働しているAZを変更します。
対象のDBインスタンスを選択して、インスタンスの操作 > 再起動 をクリックします。
確認画面に進みます。「フェイルオーバーし再起動しますか?」に チェックを付けて [再起動]ボタンを押します。
DBインスタンスのステータスが再起動から利用可能に変われば、フェイルオーバーされてMulti-AZでプライマリの稼働しているAZが変更された状態となります。 (ap-northeast-1aになりました)
Single-AZ構成に変更
この状態で、Multi-AZ構成ながらもそのプライマリは意図したAZ(ap-northeast-1a)に配備し直すことができました。
ここから、Multi-AZ構成をSingle-AZ構成に戻すことで、当初意図していたSingle-AZでap-northeast-1aでの配備に変更します。
Multi-AZに変更した手順と同様、対象のDBインスタンスを選択して、インスタンスの操作 > 変更 をクリック、マルチAZ配置の項目を「はい」から「いいえ」に変更します。 必要に応じて「すぐに適用」にチェックを付けて、変更内容を確認後、[DBインスタンスの変更]を行います。
ステータスが変更中から利用可能になれば、当初予定していた「Single-AZでap-northeast-1a」という構成になりました。
まとめ
Single-AZ構成のRDS(MySQL)でAvailablility Zoneを変更する方法をまとめてみました。
ポイントとしては、以下2つの点になります。
- Multi-AZ構成なら再起動のフェイルオーバーオプションでAZの変更が可能
- 一度起動したDBインスタンスでもSingle-AZ構成からMulti-AZ構成への変更、またその逆も可能
私のように構築段階でAZを指定し忘れてしまって意図したAZに起動していなかった時や、検証環境などで構成を変更する場合などの参考になれば幸いです。